Fix CryptoFuture.IsCryptoCoinFuture() misclassifying USD-quoted linea…#9628
Open
iharshlalakiya wants to merge 1 commit into
Open
Conversation
…r futures on non-Binance markets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #9574
IsCryptoCoinFuture()used a quote-currency whitelist (USDT/BUSD/USDC) to distinguish linear from coin-margined futures. This broke any exchange quoting linear perpetuals in fiat USD instead of a stablecoin — the case for EU MiCA-compliant exchanges (Kraken Futures, OKX EU), which are barred from using stablecoins for derivative settlement.Since
CryptoFutureHolding.GetQuantityValue()andCryptoFutureMarginModel.GetCollateralCash()both derive their behavior from this shared classification, the misclassification cascaded into wrong holdings value, collateral attribution, and total portfolio value for USD-quoted linear futures.IsCryptoCoinFuturenow also considers market: Binance keeps its existing quote-currency heuristic (Binance's coin-margined contracts are also nominally quoted in USD, e.g. BTCUSD_PERP), while other markets are treated as linear/USD-margined, since Lean currently has no coin-margined contracts outside Binance.Added tests confirming Binance's BTCUSD coin-margined classification is unchanged, and that a Kraken-market BTCUSD future is now correctly treated as linear.